package com.thinkit.bigdata.web.dao.sec;

import com.thinkit.bigdata.core.feature.orm.mybatis.Page;
import com.thinkit.bigdata.web.model.config.SysArea;
import com.thinkit.bigdata.web.model.sec.GroupAuthDto;
import com.thinkit.bigdata.web.model.sec.QcRelationDto;
import com.thinkit.bigdata.web.model.sec.SysGroup;
import com.thinkit.bigdata.web.model.sec.SysGroupExample;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface SysGroupMapper {
    int countByExample(SysGroupExample example);

    int deleteByExample(SysGroupExample example);

    int deleteByPrimaryKey(Long id);

    int insert(SysGroup record);

    int insertSelective(SysGroup record);

    List<SysGroup> selectByExample(SysGroupExample example);

    List<SysGroup> selectByExample(Page<SysGroup> page, SysGroupExample example);

    SysGroup selectByPrimaryKey(Long id);

    int updateByExampleSelective(@Param("record") SysGroup record, @Param("example") SysGroupExample example);

    int updateByExample(@Param("record") SysGroup record, @Param("example") SysGroupExample example);

    int updateByPrimaryKeySelective(SysGroup record);

    int updateByPrimaryKey(SysGroup record);

    QcRelationDto selectedSeat(Long qcGroupId);

    Integer deleteQcRelation(Long groupId);

    Integer deleteSeatRelation(Long seatGroupId);

    Integer insertQcRelation(QcRelationDto qcRelation);

    List<GroupAuthDto> selectUnAuthSeatGroupByGroupId(@Param("groupId") Long groupId, @Param("areaId") Long areaId);

    List<GroupAuthDto> selectAuthSeatGroupByGroupId(Long groupId);

    List<SysGroup> selectSeatGroupByQcGroupId(Page<SysGroup> page, @Param("groupId") Long groupId, @Param("userId") Long userId);

    List<SysGroup> selectSeatGroupByQcGroupId(@Param("groupId") Long groupId, @Param("userId") Long userId);

    SysArea selectAreaInfoByGroupId(Long groupId);

    /**
     * 根据用户id、组织机构id查询未经授权的坐席组信息（包含坐席组的父级机构信息）
     * 查询：1.所在组设置的坐席组信息；2.个人设置的坐席组信息
     */
    List<GroupAuthDto> receiveUnAuthSeatGroup(@Param("userId") Long userId, @Param("groupId") Long groupId, @Param("areaId") Long areaId);

    /**
     * 根据用户id、组织机构id查询已授权的坐席组信息（包含坐席组的父级机构信息）
     * 查询：1.所在组设置的坐席组信息；2.个人设置的坐席组信息
     */
    List<GroupAuthDto> receiveAuthSeatGroup(@Param("userId") Long userId, @Param("groupId") Long groupId);
}
